1. Field of the Invention
The present invention relates to a computer system and, more particularly, to monitoring operation of resources a computer system.
2. Description of the Related Art
Performance monitoring of components (namely, hardware resources and software resources) of a computer system is an important tool for evaluating the workload or operation of the computer system. Such performance monitoring is useful for many tasks, including failure prediction, workload or utilization analysis, suitability of platform, and the like.
Generally, performance information for a computer system is provided only to device drivers and other low-level components. Conventionally, it is possible to monitor performance of a specific hardware resources and system software resources of a computer system using data or events generated by a driver for the specific hardware resource. However, the driver and a monitor program (e.g., an application program or operating system interested in the event or data) had to be tightly coupled, customized or dedicated to interacting with the driver for the specific hardware resource. As an example, a driver was able to save event data concerning the specific hardware resource, but the monitor program interested in the event data had to know where the driver would store the data so that the monitor program could utilize the data or have special hooks built into the driver in order to obtain the data. Further, given that the program monitor was tightly coupled, customized or dedicated to interacting with the driver for the specific hardware resource, it was difficult to compare like data from other drivers.
Another problem with conventional approaches to monitoring performance of specific hardware resources of a computer system is that the events were typically stored by a driver and then subsequently retrieved at a later time by a performance monitor. Hence, the conventional approaches usually provided only historical data. As a result, such conventional approaches were unable to provide real-time monitoring of the performance of hardware resources.
Thus, there is a need for improved techniques for monitoring hardware resources of a computer system.